<?php
namespace Admin\Controller;
use Admin\Controller\CommonController;
/**
 * 商品损溢控制器
 */
class LossController extends CommonController{
	//损溢列表
	public function index(){
		$pageNum=I('pageNum',1,intval);//第几页
		$numPerPage=I('numPerPage',10,intval);//每页显示条数
		//获取排序的字段及排序方式
		$orderField=$_POST['_order']?$_POST['_order']:'date';
		$orderDirection=$_POST['_sort']?$_POST['_sort']:'desc';
		//组合排序字符串
		$orders=($orderField.' '.$orderDirection);
		//加载检索的基础数据
		$this->search();
		//检索条件
        if($_POST['search_where']){
            $this->search_where=$_POST['search_where'];
        	$where=$this->_search();
        }
    	//在where条件中增加未删除的判断条件
       	$where['del']=array('eq','0');
       	// unset($where['goods_name']);
		$db=D('LossView');
		//获取总数据条数
		$count=$db->where($where)->count();
		$this->assign('totalCount',$count);//数据的总条数
		$this->assign('numPerPage',$numPerPage);//每页显示多少条
		$this->assign('pageNumShown',6);//页标数字多少个
		$this->assign('currentPage',$pageNum);//当前是第几页
		$page= new \Think\Page($count,$numPerPage);
		$this->list=$db->limit($numPerPage)->Page($pageNum)->order($orders)->where($where)->select();
		
		//权限菜单的显示与隐藏	
		$this->assign('loss_addId',79);//添加
		$this->assign('loss_delId',106);//删除
		$this->assign('loss_editId',107);//编辑
		$this->assign('loss_confirmId',108);//审核		

		$this->display();
	}
	//新增退货
	public function add(){
		if(!empty($_POST)){
			$arr=$_POST;
			//p($arr);die;			
			$sender=I('sender',string);
			if(!$sender) $this->error('请输入操作人姓名');
			foreach ($arr['goods_number'] as $v) {
				if ($v==0) $this->error('产品数量不能为0');
			}
			//入库商品的总数量
			$count=count($arr['goods_id']);		
			$t=time();
			$date=strtotime($arr['date']);
			$type=$arr['type'];
			$db=M('loss');
			$db1=M('number');
			for ($i=0; $i <$count ; $i++) { 
				$code=$arr['goods_id'][$i];
				$pay=$arr['goods_number'][$i];
				$data=array(
					'date'=>$date,
					'code_code'=>$code,
					'number'=>$pay,
					'createtime'=>$t,
					'edittime'=>$t,
					'sender'=>$sender,
					'uid'=>session('uid'),
					'type'=>$type,
					'remark'=>$arr['goods_remark'][$i]
				);
				if($db->add($data)){
					if($type){
						//报溢操作
						$result=$db1->where(array('code_code'=>array('eq',$code)))->setInc('loss',$pay);
					}else{
						//报损操作
						$result=$db1->where(array('code_code'=>array('eq',$code)))->setDec('loss',$pay);
					}
						
					if($result){
						// 报损报溢操作成功
					}else{
						$this->error('库存损溢记账失败');
					}
				}else{
					$this->error('报损报溢添加失败');
				}
			}
			$this->success('操作成功');
		}else{
			$this->display();
		}
	}
	
	//将记录由正常状态改为删除状态,并将商品出出库数据删除
	public function delete(){
		$id = $_GET['id'];
		if(isset($id)){
			$db=M('loss');
			//获得删除出库明细的商品代码及数量
			$inf=$db->field('code_code,number,type,status')->find($id);
			if($inf['status']<>1) $this->error('当前状态不能删除');
			if ($db->where(array('id'=>$id))->save(array('del'=>1,'uid'=>session('uid')))) {
					if($inf['type']){
						$result=M('number')->where(array('code_code'=>$inf['code_code']))->setDec('loss',$inf['number']);
					}else{
						$result=M('number')->where(array('code_code'=>$inf['code_code']))->setInc('loss',$inf['number']);
					}
					if ($result) {
						$this->success ('删除成功');
					}else {
                    	$this->error ('库存表损溢数量更新失败');
            		}
                    
                } else {
                    $this->error ('损溢记录删除失败');
            }

		}
	}
	//修改
	public function edit(){
		if(!empty($_POST)){
			$db=M('loss');
			$db1=M('number');
			$id=$_POST['id'];
			$code=$_POST['code'];
			$newnumber=I('newnumber',intval);
			$oldnumber=I('oldnumber',intval);
			$type=I('oldnumber',intval);
			if($newnumber<>$oldnumber){
				$status=$db->where(array('id'=>$id))->getField('status');
				if($status<>1) $this->error('当前状态不能修改');
				if($db->where('id='.$id)->save(array('number'=>$newnumber,'edittime'=>time(),'uid'=>session('uid')))){
					$number=$newnumber-$oldnumber;
					if($type){
						$result=$db1->where(array('code_code'=>array('eq',$code)))->setDec('loss',$number);
					}else{
						$result=$db1->where(array('code_code'=>array('eq',$code)))->setInc('loss',$number);
					}
					if($result){
						$this->success('更新成功');
					}else{
	                    $this->error ('库存表发出数量更新失败');
	            	}				
				}else{
					$this->error('出库记录更新失败');
				}
			}else{
				$this->error ('更改前后数值没有变化');
			}
		}else{
			$id=$_GET['id'];
			$db=M('loss');
			$field=array('id','number','code_code','type');
			$this->list=$db->field($field)->find($id);
			$this->display();
		}
	}
}